// --------------------------------------------------------------------------------------------------------------------
// <copyright file="ImplicitUseTargetFlags.cs" company="CSLib.Net Team">
//   Copyright (c) Roman "4ux-nbIx" Novitsky 2010
// </copyright>
// <summary>
//   Specify what is considered used implicitly when marked with  or .
// </summary>
// --------------------------------------------------------------------------------------------------------------------

namespace CSLib.Net.Annotations
{
  #region Namespace Imports

  using System;
  using System.Diagnostics.CodeAnalysis;

  #endregion


  /// <summary>
  /// Specify what is considered used implicitly when marked with <see cref="MeansImplicitUseAttribute"/> or <see cref="UsedImplicitlyAttribute"/>.
  /// </summary>
  [Flags]
  [SuppressMessage("Microsoft.Naming", "CA1726:UsePreferredTerms", MessageId = "Flags", 
    Justification = "Not sure whether it is possible.")]
  public enum ImplicitUseTargetFlags
  {
    /// <summary>
    /// Itself only.
    /// </summary>
    Default = Itself, 

    /// <summary>
    /// Itself only.
    /// </summary>
    Itself = 1, 

    /// <summary>
    /// Members of entity marked with attribute are considered used.
    /// </summary>
    Members = 2, 

    /// <summary>
    /// Entity marked with attribute and all its members considered used.
    /// </summary>
    WithMembers = Itself | Members
  }
}